home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 90 / CD Actual 90.iso / Software3D / K-3D / k3d-0.4.2.1 / shaders / k3d_droop.sl < prev    next >
Encoding:
Text File  |  2004-07-23  |  525 b   |  22 lines

  1. /* Copyrighted Pixar 1989 */
  2. /* From the RenderMan Companion p.370 */
  3. /* Listing 16.27  Displacement shader with catenary droop in y*/
  4.  
  5. /*
  6.  * droop(): a displacement shader for making a surface "sag" along t.
  7. */
  8. #define M_E 2.7182818284590452354    /* e */
  9.  
  10. displacement 
  11. k3d_droop ( 
  12.     float    Km = 0.05 )
  13. {
  14.     float droop, yDel;
  15.  
  16.     droop = (t-.5)*2;    /* t in [0,1] goes to droop in [-1,1] */
  17.  
  18.     yDel = -Km * ( M_E + (1/M_E) - (exp(droop)+exp(-droop)) );
  19.     setycomp(P, ycomp(P) + yDel);
  20.     N = calculatenormal(P);
  21. }
  22.